package de.hilling.junit.cdi.scope.annotationreplacement;
import org.junit.Test;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.SessionScoped;
import java.lang.annotation.Annotation;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class AnnotationReplacementHolderTest {
private AnnotationReplacementHolder holder;
@Test
public void ignoreNoReplacementFound() {
createHolder("no such resource");
assertEquals(0, holder.getReplacementMap().size());
}
@Test
public void simpleReplacementWithComment() {
createHolder("test-annotations.properties");
Map<Class<? extends Annotation>, Annotation> replacementMap = holder.getReplacementMap();
assertEquals(1, replacementMap.size());
Map.Entry<Class<? extends Annotation>, Annotation> annotationEntry = replacementMap.entrySet().iterator().next();
assertEquals(SessionScoped.class, annotationEntry.getKey());
assertTrue(annotationEntry.getValue() instanceof ApplicationScoped);
}
@Test(expected = RuntimeException.class)
public void noSuchClass() {
createHolder("test-nosuchclass.properties");
}
@Test(expected = RuntimeException.class)
public void classNotAnAnnotation() {
createHolder("test-noannotation.properties");
}
private void createHolder(String resourceName) {
holder = new AnnotationReplacementHolder(resourceName);
}
}